/*共用体 
在内部可以定义不同的数据类型，但是所有的成员共享同一片内存，成员保留的值是最后一次赋值操作，改变其中一个成员的值，其他的成员会有影响
内存大小为  最大成员的大小
*/
#include <stdio.h>
//声明一个共用体类型  
union Test
{
    unsigned char a;
    unsigned int b;//4个字节
    unsigned short c;
    long d[10];
};
int main(int argc, char const *argv[])
{
 //定义共用体变量
    union Test Temp;
    //输出各个成员的地址
    printf("&Temp:%p &Temp.a:%p &Temp.b :%p &Temp.c:%p\n",&Temp,&Temp.a,&Temp.b,&Temp.c);//变量.成员访问
    //共用体内存大小
    printf("Temp_size:%lu\n",sizeof(Temp));
    //改变其中一个成员的数据，其他成员的数值会受影响
    Temp.b=0X44332211;//低位的数据存在低地址  
    printf("a:%x  b:%x  c:%x\n",Temp.a,Temp.b,Temp.c);
    //改变 低字节的类型的成员数据
    Temp.a=0x00;
      printf("a:%x  b:%x  c:%x\n",Temp.a,Temp.b,Temp.c);


    return 0;
}
